Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Electronic systems designed to provide these benefits often include integrated circuits on a single substrate that provide a variety advantages over discrete component circuits. However, traditional design and manufacturing approaches for integrated circuits are often very complex and consume significant resources.
Electronic systems often rely upon a variety of components included in integrated circuits to provide numerous functions. Microcontrollers are one example of integrated circuit components with characteristics that are potentially useful in a variety of applications. For example, microcontrollers are typically reliable and relatively economical to produce. Microcontrollers have evolved since they were first introduced and have substantially replaced mechanical and electromechanical components in numerous applications and devices. However, while traditional microcontrollers have some characteristics that are advantageous they also tend to be limited in the number of applications in which any given microcontroller can be utilized.
Traditionally each microcontroller was custom designed precisely for a narrow range of applications with a fixed combination of required peripheral functionalities. Developing custom microcontroller designs with particular fixed peripherals is time and resource intensive, typically requiring separate and dedicated manufacturing operations for each different microcontroller (which is particularly expensive for small volume batches). Even if a microcontroller may suffice for more than one application, it is still difficult to select an appropriate microcontroller for a particular application and even harder to find an optimum microcontroller, usually necessitating a compromise in the selection.
Application specific integrated circuits (ASICs) may appear to address some of the issues associated with finding a suitable microcontroller for a particular application, but they tend to present significant hurdles. ASICs can be problematic because they tend to require a sophisticated amount of design expertise and the obstacles of long development times, high costs, and large volume requirements still remain. In addition traditional integrated circuit configurations and functionality are typically set during initial manufacture and are not readily adaptable to changing conditions in the field. Most applications require the performance of a variety of different functions resulting in significantly increased resource commitments. Providing components dedicated to single functions often results in under utilization of those dedicated components.
It is also very important for microcontrollers to have appropriate interrupt handling capabilities. Interrupts are usually changes in flow of control caused by something other than a running program. Interrupts typically involve important and often critical operations, such as an input/output interrupt request or an error non maskable interrupt. If the interrupt is inappropriate for a particular configuration or functionality and/or not handled correctly, a system will likely produce erroneous results and/or crash. Another important aspect of interrupt handling is for the interrupt handling to be transparent. When a microcontroller stops processing a particular program to handle an interrupt, it is important for the microcontroller to be returned to a state that permits the microcontroller to appropriately continue with the particular programming.